混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解

您所在的位置:网站首页 python 函数属性 混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解

混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解

2023-12-04 05:50| 来源: 网络整理| 查看: 265

混淆概念详细解析:Python中类、对象、方法、函数和属性的区别和理解 前言一、类、对象、方法、函数和属性的区别和理解二、一个类的简单案例和对各种概念的理解三、总结

欢迎学习交流! 邮箱: z…@1…6.com 网站: https://zephyrhours.github.io/

前言

相信很多刚刚初学 python 的朋友几乎都会被类、对象、方法、函数和属性等概念搞得云里雾里,如果没有人点播,其实理解这些概念还是会有些困难的,下面笔者把自己对这几个概念的理解分享给大家,希望对初学者有所帮助!请仔细看完,多看几遍应该可以看懂!

一、类、对象、方法、函数和属性的区别和理解 类: 采用 Class 作为关键字进行定义的代码块,表示的是一种类别对象: 实例化之后的类,对类中的形参进行了赋值,赋予其真正的含义或数值方法: 使用 def 作为关键词,定义在类内的函数函数: 使用 def 作为关键词,但是没有在类内进行定义,即 定义在类外属性: 类内的称呼,其实就是类内的变量,同一个类内的不同方法内的变量都是这个类的属性,也就是这个类的变量

下面这些是重点,请仔细看,多看几遍,只要你能看懂下面这句话,也就理解了这些混淆概念的区别了!

主要区别【定义和使用的位置】: 函数和方法都是函数,定义在类内叫做方法,定义在类外或者单独使用叫做函数; 属性和变量其实都是变量,定义在类内叫做属性,定义在类外或者单独使用叫做变量;

类 就像数学中的集合,也像一个大的函数,只不过这个函数里面有很多小的函数(这些小函数就是类内的方法),是一个抽象的概念,类只有实例化之后才具有意义,而实例化的类叫做对象,这里就变成了一个具体的实物。

二、一个类的简单案例和对各种概念的理解

为了更好的帮助大家进行理解,下面我们通过创建一个简单的例子来对其进行解释,具体如下:

#!/usr/bin/python # -*- coding: utf-8 -*- """ PyQt5 tutorial Zephyr Hou on 2020-07-21 """ class Person: num=1 # 类的属性,使用前需要对其进行声明,否则会报错 print("您实例化了Person类,初始化的num=",num) def setName(self,name): self.name=name # 第一个内部是类内部的属性 def getName(self): return self.name def count(self): self.num+=1 # 使用之前已经对其进行了声明

解释: 首先,我们创建了一个 类,而这个类的名字叫做 Person,然后在这个 Person代码块 下,定义了 setName、 getName 和 count 三个函数,因为定义的这三个函数在代码块内,所有我们称之为 Person类 的 三个方法(分别是:setName方法、 getName 方法和 count 方法 )

而对于 setName 方法下面的 变量name, count方法下面的变量num ,我们都可以称之为 类 Person 下面的属性,而类在进行使用时,我们需要对其进行实例化,具体实例化的例子如下:

#!/usr/bin/python # -*- coding: utf-8 -*- """ PyQt5 tutorial Zephyr Hou on 2020-07-21 """ # Person类的实例化 p=Person() # 调用setName和getName方法 p.setName("小猴") print(p.getName()) # 不调用的时候,查看count方法的属num性 print("num="+str(p.num)) # 调用count方法时,查看count方法的属num性 p.count() print("num="+str(p.num)) # 再次调用count方法时,查看count方法的属num性 p.count() print("num="+str(p.num))

通过上面的代码对Person进行类的实例化,在对其进行实例化之后,具体运行效果如下: 在这里插入图片描述 通过结果分析可知,当我们对类进行实例化之后,就可以调用类内的各种方法和属性,具体情况如下:

当我们不调用count方法时,可以发现其下面的num属性值和初始化的num值保持一致,num=1保持不变;当我们首先调用count方法时,然后再查看count方法下的num属性时,其值就发生了改变,此时有num=2;当我们第二次调用count方法时,我们可以发现其下面的num属性值其实时是将上次调用之后的运算结果num=2作为初始值进行了运算,得到了此次的运算结果。

这说明当类被实例化之后,类内的代码会被执行,但是其内部的方法在没有被调用之前不会被执行,方法中的属性也不会发生改变,而当方法被调用之后,方法内部的属性值也会发生相应的改变,改变之后的属性值会传递到整个类内,当再次进行调用该类的方法时,其属性的初始值是上次运算之后的属性值结果。

三、总结

我们对 类 进行定义好之后,在使用之前应该注意以下几点:

类在使用之前必须进行实例化实例化一个类之后,如果在方法外写的代码(如:属性值)会被直接运行,方法内部的代码(属性)只有在调用的时候才会被执行类中写的变量名称,自动会被认为是类的属性,这个属性可以被该类的方法调用类中的属性(变量)在使用前需要对其进行声明,否则容易出现错误


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3